package com.kjtpay.design_pattern.observer;

import java.util.ArrayList;
import java.util.List;

class Subject {
    private String subjectState;
    private List<Observer> observerList = new ArrayList<Observer>();

    // 设置主题状态
    public void setSubjectState(String subjectState) {
        this.subjectState = subjectState;
    }

    // 添加观察者
    public void attach(Observer observer) {
        observerList.add(observer);
    }

    // 移除观察者
    public void detach(Observer observer) {
        observerList.remove(observer);
    }

    // 通知，notify这个名字不能用
    // 把主题的状态subjectState通过参数的方式传递给观察者Observer
    public void notice() {
        for (Observer observer:observerList) {
            observer.update(subjectState);
        }
    }
}
